#include "test.h"
uint8_t ESP_WaitResponse(char* expected_response)
{
    uint32_t timeout = 0;
    char response[100];
    uint8_t idx = 0;
    
    memset(response, 0, sizeof(response));
    
    while(timeout < ESP_TIMEOUT)
    {
        if(USART_GetFlagStatus(ESP_USART, USART_FLAG_RXNE) != RESET)
        {
            response[idx++] = USART_ReceiveData(ESP_USART);
            
            // 检查是否收到预期响应
            if(strstr(response, expected_response) != NULL)
                return 1;
                
            // 检查是否收到错误响应
            if(strstr(response, "ERROR") != NULL)
				printf("error response\r\n");
                return 0;
        }
        
        timeout++;
        drv_systick_ms(1);
    }
    printf("error timeout\r\n");
    return 0; // 超时
}
void ESP_SendCommand(char* cmd)
{
    while(*cmd)
    {
        USART_SendData(ESP_USART, *cmd++);
        while(USART_GetFlagStatus(ESP_USART, USART_FLAG_TXE) == RESET);
    }
}
uint8_t ESP_Init(void)
{ 
    // 发送AT指令测试连接
    ESP_SendCommand("AT\r\n");
    if(!ESP_WaitResponse("OK"))
        return 0; // 初始化失败
    
    // 设置WiFi模式为Station模式
    ESP_SendCommand("AT+CWMODE=1\r\n");
    if(!ESP_WaitResponse("OK"))
        return 0;
    
    // 重启模块使设置生效
    ESP_SendCommand("AT+RST\r\n");
    drv_systick_ms(2000); // 等待重启完成
    
    return 1; // 初始化成功
}


